
import { IsNotEmpty, IsString, IsOptional, IsInt, MaxLength, ArrayMinSize, IsArray, ValidateNested } from 'class-validator';
import { BaseRequestListDto } from './baseRequestList.dto';
import { Type } from 'class-transformer';


export class CreateBannerDto {

    /**状态(0-禁用,1-正常)*/
    @IsOptional()
    status?: number;


    /**备注*/
    @IsOptional()
    comment?: string;


    /**Banner标题，最大长度100字符*/
    @IsNotEmpty({ message: 'Banner标题，最大长度100字符不能为空' })
    title!: string;


    /**图片URL地址，必须为有效URL*/
    @IsNotEmpty({ message: '图片URL地址，必须为有效URL不能为空' })
    imageUrl!: string;


    /**点击跳转链接（可选），必须为有效URL*/
    @IsOptional()
    linkUrl?: string;


    /**排序权重，数值越小越靠前，默认0*/
    @IsOptional()
    sortOrder!: number;


    /**是否激活状态，默认true*/
    @IsOptional()
    isActive?: number;

}

export class UpdateBannerDto {
    @IsNotEmpty({ message: 'id不能为空' })
    id!: number;


    /**状态(0-禁用,1-正常)*/
    @IsOptional()
    status?: number;


    /**备注*/
    @IsOptional()
    comment?: string;


    /**Banner标题，最大长度100字符*/
    @IsOptional()
    title?: string;


    /**图片URL地址，必须为有效URL*/
    @IsOptional()
    imageUrl?: string;


    /**点击跳转链接（可选），必须为有效URL*/
    @IsOptional()
    linkUrl?: string;


    /**排序权重，数值越小越靠前，默认0*/
    @IsOptional()
    sortOrder?: number;


    /**是否激活状态，默认true*/
    @IsOptional()
    isActive?: number;

}

export class QueryBannerDto extends BaseRequestListDto {

    /**状态(0-禁用,1-正常)*/
    @IsOptional()
    status?: number;


    /**备注*/
    @IsOptional()
    comment?: string;


    /**Banner标题，最大长度100字符*/
    @IsOptional()
    title?: string;


    /**图片URL地址，必须为有效URL*/
    @IsOptional()
    imageUrl?: string;


    /**点击跳转链接（可选），必须为有效URL*/
    @IsOptional()
    linkUrl?: string;


    /**排序权重，数值越小越靠前，默认0*/
    @IsOptional()
    sortOrder?: number;


    /**是否激活状态，默认true*/
    @IsOptional()
    isActive?: number;

}

export class DeleteBannerDto {
    @IsNotEmpty({ message: 'ID列表不能为空' })
    @IsInt({ each: true, message: '每个ID必须是整数' })
    ids!: number[];
}


export class SelectOneBannerDto {
    @IsNotEmpty({ message: 'ID不能为空' })
    id!: number;
}



class SortBannerItemDto {
    @IsInt({ message: 'id必须是整数' })
    @IsNotEmpty({ message: 'ID不能为空-' })
    id!: number;

    @IsInt({ message: 'sort必须是整数' })
    @IsNotEmpty({ message: '排序不能为空' })
    sortOrder!: number;
}
export class SortBannerDto {
    @IsArray({ message: 'list必须是数组' })
    @ArrayMinSize(1, { message: 'list不能为空数组' })
    @ValidateNested({ each: true }) // 校验每个数组项
    @Type(() => SortBannerItemDto) // 必须配合class-transformer
    list!: SortBannerItemDto[];
}


export class BannerResponseDto extends BaseRequestListDto {
    /**id*/
    @IsOptional()
    id?: number;

    /**创建时间*/
    @IsOptional()
    createdAt?: string;

    /**更新时间*/
    @IsOptional()
    updatedAt?: string;



    /**状态(0-禁用,1-正常)*/
    @IsOptional()
    status?: number;


    /**备注*/
    @IsOptional()
    comment?: string;


    /**Banner标题，最大长度100字符*/
    @IsOptional()
    title?: string;


    /**图片URL地址，必须为有效URL*/
    @IsOptional()
    imageUrl?: string;


    /**点击跳转链接（可选），必须为有效URL*/
    @IsOptional()
    linkUrl?: string;


    /**排序权重，数值越小越靠前，默认0*/
    @IsOptional()
    sortOrder?: number;


    /**是否激活状态，默认true*/
    @IsOptional()
    isActive?: number;

}
